1) Field of the Invention
The present invention relates to methods and computers programs for conversion of client character code and server character code employed in CORBA (common object request broker architecture), CORBA client, and CORBA server. The present invention relates, more particularly, to carrying out a conversion of character code information with character code information (such as a vendor specific character code set) not registered in an object reference.
2) Description of the Related Art
CORBA is a standardization specification used to connect between different types of computers. CORBA is established by the standardization organization OMG (Object Management Group). CORBA prescribes various kinds of APIs (Application Program Interfaces) to build up a linked protocol between different types of computers, and a distributed application.
In short, CORBA is a standardization technique that provides a mechanism for a client that is based on CORBA (hereinafter, “CORBA client”) to make access to an object (for example, an application program) within a server that is based on CORBA (hereinafter, “CORBA server”) in a distributed system environment.
The object in CORBA refers to an entity that is identifiably encapsulated to provide one or a plurality of services that clients can request.
FIG. 13 is a block diagram of a configuration of a conventional client-server system based on CORBA. As shown in FIG. 13, a CORBA client 10 has a client object 11 and a client ORB (Object Request Broker: a mechanism of communications between distributed objects) 12. The client object 11 is an application program or the like that is used to execute various kinds of processing and communications.
The client ORB 12 is a software bus that intermediates between the client object 11 and the server object 31 in their communications. The client ORB 12 accesses a naming service server 50 and a CORBA server 30 via a network 20.
The client ORB 12 can communicate with a server ORB 32 via the network 20, by using neutral stream-format data, that is GIOP (General Inter-ORB Protocol) message 40, that does not depend on a specific operating system, a specific program language, or a specific architecture. The GIOP message 40 will be described in detail at later stage.
The CORBA server 30 includes a server object 31 and the server ORB 32. The server object 31 is an application program or the like that is used to execute various kinds of processing and communications. The server ORB 32 is a software bus accessed by the client ORB 12 via the network 20 and intermediates between the client object 11 and the server object 31 in their communications.
The server ORB 32 can also communicate with the client ORB 12 via the network 20, by using the neutral stream-format data, that is, the GIOP message 40, that does not depend on a specific operating system, a specific program language, or a specific architecture.
In the client-server system that is based on CORBA, a difference between operating systems, a difference between platforms, or a difference between program development languages appears as a difference between character code systems that can be handled. Many character code sets and code set registries are known currently as character code systems. Some of the character code systems are shown in FIG. 14.
A character code set is a set of character codes that are provided based on a constant standard. The character code is an identification number attached to a character that is handled in a computer. A code set registry is a value for uniquely specifying a corresponding character code set.
As shown in FIG. 14, ISO8859-1 (Latin-1), ISO/IEC 10646-IUCS2-1, and ISO/IEC 10646-IUCS4-1 are character code sets that are standardized by ISO (International Organization for Standardization). JIS and JIS Japanese EUC are character code sets that are standardized by JIS (Japan Industrial Standard).
As the above character code sets are standardized by public organizations such as ISO and JIS, these character code sets will be referred to as standard character code sets. These standard character code sets and code set registries are integrally managed by OSF (Open Software Foundation) as an international standardization organization, and are included in an object reference that is stored in an object reference database 51.
Apart from the standard character code sets, the character code sets include vendor specific character code sets. The vendor specific character code sets are character codes that the vendors add based on the standard character code sets. In other words, the vendor specific character code sets are character code sets are specific to each vendor. The vendors are the manufacturers or marketers of computer hardware or software.
With reference to FIG. 14, JIS for company B means a vendor specific character code set that is used by a vendor company B. On the other hand, a part one of Japanese EUC for company A, a part two of Japanese EUC for company A, . . . , and EBCDIC (English small letters) for company A are vendor specific character code sets used by a vender company A.
A character code system depends on the operating systems that are used in the CORBA client 10 and the CORBA server 30. Therefore, vendors and operating systems, and platforms and program development languages may be different for the CORBA client 10 and the CORBA server 30. It is not rare that their respective character code systems are different.
In the example shown in FIG. 14, the CORBA client 10 uses JIS (0x00030001) as a standard character code set for a client NCS (Native Code Set). On the other hand, the CORBA server 30 uses ISO/IEC 10646-1UCS2-1 (0x00010100) as a standard character code for a server NCS, and uses JIS (0x00030001) as a standard character code set for a CCS (Conversion Code Set).
When the CORBA client 10 and the CORBA server 30 use different standard character codes sets (and code set registries), the CORBA client 10 and the CORBA server 30 exchange information required for the code set conversion.
Referring back to FIG. 13, the client NCS in the CORBA client 10 is a code set registry (i.e., a character code set) that is used in the client object 11.
The server NCS in the CORBA server 30 is a code set registry (i.e., a character code set) that is used in the server object 31. The CCS is a code set registry (i.e., a character code set) that can be converted between the server NCS and the CCS.
The client ORB 12 and the server ORB 32 exchange the GIOP message 40 as neutral data between them. The GIOP message 40 is formatted as shown in FIG. 15. The format of the GIOP message includes information of a GIOP header, a request header, and a request body. The request header includes information of request_id (request ID), response_flags (response flags), target, operation, and service_context. The service_context includes information of context_id, contex_data length, and TCS (Transmission Code Set). TCS is a neutral code set registry (i.e., a character code set) that does not depend on a specific operating system, a specific program language, or a specific architecture.
Referring back to FIG. 13, the naming service server 50 provides the CORBA client 10 with a naming service of CORBA, and has a function of managing the server object 31 based on a name.
Based on this naming service, when the client object 11 accesses the server object 31, the client object 11 can access the server object 31 based on a name of the server object 31 instead of a position of the server object 31. Therefore, the client object 11 does not need to be conscious about a physical position of the server object 31.
Specifically, when the naming service server 50 receives an inquiry from the client object 11, the naming service server 50 reads an object reference from the object reference database 51, and returns this object reference to the client object 11, thereby to provide a naming service.
The object reference is information for uniquely identifying the server object 31 based on a name. Specifically, the object reference consists of information including an IOR (Interoperable Object Reference) header, an ID (Identification), a host name, a PORT number, an object key, the server NCS, and the CCS.
The IOR header is header information of the object reference. The ID is identifier information for identifying the object reference. The host name is a name of a host that has an object. An IP address of the CORBA server 30 may be set to the host name as it is.
The PORT number is a port number that specifies the server object 31. Vendor own information corresponding to the server ORB is set to the object key. Therefore, in the case of FIG. 13, vendor own information corresponding to the server ORB 32 is set to the object key.
The client ORB 12 determines the TCS based on the server NCS and the CCS obtained from the object reference, embeds this TCS into the GIOP message 40, and transmits the message to the server ORB 32.
The code conversion negotiation that is carried out in the client-server system will be explained next. In FIG. 13, the client object 11 accesses the naming service server 50 via the network 20, and requests the naming service server 50 for an object reference (including the server NCS and the CCS) corresponding to the server object 31.
Based on this, the naming service server 50 reads the object reference from the object reference database 51, and transmits this object reference to the client object 11.
The client object 11 obtains the object reference, and delivers transmission data corresponding to the client NCS (0x0003001 (JIS)) and the obtained object reference to the client ORB 12.
The client ORB 12 obtains the server NCS (0x00010100 (ISO/IEC 10646-1UCS2-1) and the CCS (0x00030010 (JIS) from the object reference.
The client ORB 12 executes a TCS determination processing of determining the TCS to be set to the GIOP message 40, based on a result of a comparison between the client NCS (0x00030010 (JIS)) and the server NCS (0x00010100 (ISO/IEC 10646-1IUCS2-1) and the CCS (0x00030010 (JIS).
Specifically, at a first step, the client ORB 12 decides whether the client NCS (0x00030001 (JIS)) coincides with the server NCS (0x00010100 (ISO/IEC 10646-1UCS2-1). In this example, the client ORB 12 sets “No” as a result of the comparison carried out. When a result of the comparison carried out at the first step is “Yes”, the client ORB 12 determines the server NCS as the TOS.
When a result of the decision made at the first step is “No”, the client ORB 12 decides at a second step whether the client NCS (0x00030001 (JIS)) coincides with the CCS (0x00030001 (JIS)). In this example, the client ORB 12 sets “Yes” as a result of the comparison carried out, and determines the CCS as the TCS. When a result of the comparison carried out at the second step is “No”, it is not possible to carry out the conversion of the code sets. In this case, an error occurs.
The client ORB 12 sets the TCS determined in the TCS determination processing and the transmission data, to the GIOP message 40, and transmits the GIOP message 40 to the server ORB 32 via the network 20.
The server ORB 32 receives the GIOP message 40. When the TCS set in the GIOP message 40 coincides with the server NCS, the server ORB 32 uses the TCS as the server NCS, and delivers the reception data (i.e., the transmission data that is received) and the server NCS to the server object 31.
On the other hand, when the TCS set in the GIOP message 40 coincides with the CCS, the server ORB 32 converts the TCS (i.e., the CCS) into the server NCS, and delivers the reception data and the server NCS to the server object 31.
As explained above, according to the conventional client-server system based on CORBA, the system works without any problem based on the conversion of the character code sets, when both the CORBA client 10 and the CORBA server 30 use the standard character code sets.
However, conventionally, when vendor specific character code sets are used in place of the standard character code sets and also when the vendor specific character code sets (i.e., character code information) are not registered in the object reference, the other party recognizes the vendor specific character code sets (i.e., character code information) as unknown character codes sets (i.e., character code information). Therefore, in this case, there has been a problem that an error occurs in the system.